package com.lanhai.zhonglai.interfaces;
  

/**
 *  
 * @author zhengwei
 *
 */
public interface IControlArea {
	void init();
	
	
	/**
	 * 获取交管区Id
	 * @param x
	 * @param y
	 * @return
	 */
	long getAreaId(int x, int y);
	
	
	/**
	 * 解锁交管区
	 * @param areaid
	 */
	void unlockArea(long areaid ); 
	/**
	 * 锁定交管区
	 * @param areaid
	 * @param agvid
	 * @return
	 */
	boolean lockArea(long areaid, int agvid); 
	 
	
 
	/**
	 * 判断agv是否是当前区域的锁定者
	 * @param areaid
	 * @param agvid
	 * @return
	 */
	boolean isLocker(long areaid, int agvid);
	
	
	/**
	 * 判断传输工位外部的交管区是否被锁
	 * @param areaid
	 * @param dotno
	 * @return
	 */
	boolean isLockedForDot( int dotno, int agvid);
	
	boolean areaIsLocked( int areaid, int agvid);
	
	/**
	 * 添加被 交管AGV
	 * @param areaid
	 * @param agvid
	 * @return
	 */
	boolean addStopAgv(long areaid, int agvid);
	
	
	
	/**
	 * 移除被交管agv
	 * @param areaid
	 * @param agvid
	 */
	void removeStopAgv(long areaid, int agvid);
	 
}
